package com.gsdl.model.entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

// TODO: Auto-generated Javadoc
/**
 * The Class Utilizador.
 *
 * @author Natacha Antonopoulos
 */

@Entity
@Table(name = "utilizador")
@NamedQueries( 
    {   
        @NamedQuery(name = "Utilizador.findByUsernameANDPassword", query = "SELECT u FROM Utilizador u WHERE u.username = :username AND u.password = :password" ),
        @NamedQuery(name = "Utilizador.findAll", query = "SELECT u FROM Utilizador u" ),
    }
 )
public class Utilizador extends BaseEntity implements Serializable {
	
	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = -7611585575482607317L;

	/** The username. */
	@Column(name="username", nullable=false)
	private String username;
	
	/** The nome. */
	@Column(name="nome", nullable=false)
	private String nome;

	/** The password. */
	@Column(name="password", nullable=false)
	private String password;
	
	/** The nif. */
	@Column(name="nif")
	private int nif;

	/** The bi. */
	@Column(name="bi")
	private int bi;

	/** The telefone. */
	@Column(name="telefone")
	private String telefone;
	
	/** The perfil utilizador. */
	@Column(name="perfil_utilizador")
	@Enumerated(EnumType.STRING)
	private PerfilUtilizador perfilUtilizador;

	/**
	 * The Enum PerfilUtilizador.
	 */
	public enum PerfilUtilizador {
		
		ADMINISTRADOR,
		
		RESPONSAVEL,
		
		OPERADOR;
	}
	
	/**
	 * Gets the username.
	 *
	 * @return the username
	 */
	public String getUsername() {
		return username;
	}

	/**
	 * Sets the username.
	 *
	 * @param username the new username
	 */
	public void setUsername(String username) {
		this.username = username;
	}

	/**
	 * Gets the nome.
	 *
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * Sets the nome.
	 *
	 * @param nome the new nome
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * Gets the password.
	 *
	 * @return the password
	 */
	public String getPassword() {
		return password;
	}

	/**
	 * Sets the password.
	 *
	 * @param password the new password
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * Gets the nif.
	 *
	 * @return the nif
	 */
	public int getNif() {
		return nif;
	}

	/**
	 * Sets the nif.
	 *
	 * @param nif the new nif
	 */
	public void setNif(int nif) {
		this.nif = nif;
	}

	/**
	 * Gets the bi.
	 *
	 * @return the bi
	 */
	public int getBi() {
		return bi;
	}

	/**
	 * Sets the bi.
	 *
	 * @param bi the new bi
	 */
	public void setBi(int bi) {
		this.bi = bi;
	}

	/**
	 * Gets the telefone.
	 *
	 * @return the telefone
	 */
	public String getTelefone() {
		return telefone;
	}

	/**
	 * Sets the telefone.
	 *
	 * @param telefone the new telefone
	 */
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	/**
	 * Gets the perfil utilizador.
	 *
	 * @return the perfil utilizador
	 */
	public PerfilUtilizador getPerfilUtilizador() {
		return perfilUtilizador;
	}

	/**
	 * Sets the perfil utilizador.
	 *
	 * @param perfilUtilizador the new perfil utilizador
	 */
	public void setPerfilUtilizador(PerfilUtilizador perfilUtilizador) {
		this.perfilUtilizador = perfilUtilizador;
	}
	
	

}
